var config = require("./config.js");
var common = require("./utils/common.js");
var service = require("./utils/service.js");
//var $ = require("./utils/deferred.js");
//app.js
App({
  onLaunch: function () {
    // 展示本地存储能力
    var logs = wx.getStorageSync('logs') || []
    logs.unshift(Date.now())
    wx.setStorageSync('logs', logs)

    // 登录
    wx.login({
      success: res_login => {
        //this.test();
        // 发送 res.code 到后台换取 openId, sessionKey, unionId
        if (res_login.code) {
          console.log('登录了');
          console.log(config);
          wx.getUserInfo({
            withCredentials: true,
            success: function (res_user) {
              var requestUrl = config.loginUrl + "appId=wx465fbd82ebc1b84b" + "&code=" + res_login.code + "&mini=ture";
              var obj = {};
              obj["appId"] = "wx465fbd82ebc1b84b";
              obj["code"] = res_login.code;
              obj["mini"] = true;
              var url = common.appendUrlParams(config.baseUrl + "/wxxt/openid", obj);
              console.log(url);
              // getApp().ajax({
              //   url: url,
              //   success: function (res) {
              //     console.log("我获取到了");
              //     console.log(res);
              //     getApp().globalData.openid = res.data.openId;
              //   }
              // })
              
              //common。ajax测试
              // common.ajax({
              //   url: url
              // }).then((data)=>{
              //   console.log("获取数据成功");
              //   console.log(data);
              // },(err)=>{
              //   console.log("common.ajax获取数据失败了");
              //   console.log(err);
              // });

              service.ajax({
                url: url,
                dataType: "json",
              }).then((data) => {
                console.log("获取数据成功");
                console.log(data);
              }, (err) => {
                console.log("service.ajax获取数据失败了");
              console.log(err);
              })

              //requestUrl = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=wx465fbd82ebc1b84b" +"&secret=56550bf032222a5bc55a7dda93b639de&code="+res_login.code+"&grant_type=authorization_code";
              requestUrl = 'https://api.weixin.qq.com/sns/jscode2session?appid=wx465fbd82ebc1b84b&secret=56550bf032222a5bc55a7dda93b639de&grant_type=authorization_code&js_code=' + res_login.code,
                console.log(requestUrl);
              // var jsonData = {
              //   code: res_login.code,
              //   encryptedData: res_user.encryptedData,
              //   iv: res_user.iv
              // };
              // wx.request({
              //   url: requestUrl,
              //   success: function (res) {
              //     console.log("请求成功");
              //     console.log(res);
              //   },
              //   fail: function (err) {
              //     wx.showToast({
              //       title: err,
              //     })
              //   }
              // });

              // request.httpsPostRequest(requestUrl, jsonData, function (res) {
              //   console.log(res.openId);
              // });
            }
          })
        }
      }
    })
    // 获取用户信息
    wx.getSetting({
      success: res => {
        if (res.authSetting['scope.userInfo']) {
          // 已经授权，可以直接调用 getUserInfo 获取头像昵称，不会弹框
          wx.getUserInfo({
            success: res => {
              // 可以将 res 发送给后台解码出 unionId
              this.globalData.userInfo = res.userInfo

              // 由于 getUserInfo 是网络请求，可能会在 Page.onLoad 之后才返回
              // 所以此处加入 callback 以防止这种情况
              if (this.userInfoReadyCallback) {
                this.userInfoReadyCallback(res)
              }
            }
          })
        }
      }
    })
  },
  globalData: {
    userInfo: null,
    openid: null,
    config: config
  },
  /*判断是否微信授权登录*/
  isLogin: function () {
    //|| wx.canIUse('button.open-type.getUserInfo')
    if (this.globalData.userInfo) {

    } else {
      wx.showModal({
        title: '提示',
        content: '您还没有登录。',
        showCancel: false,
        success: function (res) {
          if (res.confirm) {
            console.log('用户点击确定');
            wx.reLaunch({
              url: '../../pages/login/login',
            });
          } else if (res.cancel) {
            console.log('用户点击取消')
          }
        }
      });
      // wx.showToast({
      //   title: '您还没有登录。',
      //   icon: 'none',
      //   duration: 4000
      // })
    }
  },
  test:function(){
    var dfd = $.Deferred();
    setTimeout(function () {
      dfd.resolve("hurray");
    }, 100);
    var dfd2 = $.Deferred();
    setTimeout(function () {
      dfd2.reject("sorry");
    }, 200);
    dfd.promise().done(function(data){console.log("resolve " + data)});
    dfd2.promise().fail(function (data) { console.log("reject " + data) });
  },
  //微信原请求库封装
  //https://blog.csdn.net/qq_35909852/article/details/79155430
  //https://gist.github.com/song940/43ce748ba578d40f3873997524f41e0d
  //
  ajax: function ({ url, data, success, method = "GET" }) {
  //  var that = this;
    wx.showLoading({
      title: '加载中...',
      mask: true
    });
    wx.request({
      url: url,
      method: method,
      data: data,
      success: (res) => {
        if (res['statusCode'] === 200) {
          //如果请求服务器有错误代码
          if (res.data.errorCode && res.data.errorCode != "0") {
            wx.hideLoading();
            //显示错误信息
            wx.showModal({
              title: '提示',
              content: res.data.errorMsg,
              showCancel: false,
              success: function (res) {
                if (res.confirm) {
                  console.log('用户点击确定');
                } 
              }
            });
            // wx.showToast({
            //   title: res.data.errorMsg,
            //   icon: 'none',
            //   duration: 2000
            // })
          }
          else {
            //请求数据成功
            let data = res.data; success(data);
            //res['statusCode'] === 200 ? success(data) : fail();
          }
        }else{
          this.fail(res["errMsg"]);
        }

      },
      fail: (err) => {
        wx.hideLoading();
        wx.showToast({
          title: err,
          icon: 'none',
          duration: 2000
        })
      },
      complete: () => {
        wx.hideLoading();
      }
    })
  }
})